/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package clases;

/**
 *
 * @author F
 */
public class Cifrado {

    private static long llave;

    public static String cifrar(String texto) {
        int i = 0;
        String aux = "";

        for (i = 0; i < texto.length(); i++) {
            aux += codificarLetra(texto.charAt(i));
        }
        return aux;
    }

    public static String decifrar(String texto) {
        int i = 0;
        String aux = "";

        for (i = 0; i < texto.length(); i++) {
            aux += decodificarLetra(texto.charAt(i));
        }
        return aux;
    }

    /**
     * @return the llave
     */
    public static long getLlave() {
        return llave;
    }

    /**
     * @param aLlave the llave to set
     */
    public static void setLlave(Object aLlave) {
        llave = Integer.parseInt(aLlave.toString());
    }

    private static char codificarLetra(char letra) {
        if (letra == ' ') { // Cristian PD: y si el caracter ascci es ' '
            return ' ';
        }else if (letra == '\n') {
            return '\n';
        } else {
            int ascii = (int) letra; // cara e raja
            ascii += llave;
            letra = (char) ascii; // x2
            if(ascii == (int)' ' || ascii == (int)'\n'){//si la letra codificada es ' ', le sumo 1 al ascii, para que no sea
                letra = (char) (ascii + 1);
            }
            return letra;
        }
    }

    private static char decodificarLetra(char letra) {
        if (letra == ' ') {
            return ' ';
        }else if (letra == '\n') {
            return '\n';
        } else {
            int ascii = (int) letra; //asd
            ascii -= llave;
            letra = (char) ascii; // x2
            if(ascii == (int)' ' || ascii == (int)'\n'){//si la letra codificada es ' ', le sumo 1 al ascii, para que no sea
                letra = (char) (ascii - 1);
            }
            return letra;
        }
    }
}
